/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package sys.utils;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.ini4j.Wini;
import sys.bean.UsuarioBean;
import sys.dao.UsuarioDao;
import static sys.utils.Utils.dirFileCalcs;
import static sys.utils.Utils.dirFileConfig;
import static sys.utils.Utils.dirFileTraco;

/**
 *
 * @author Cesar Daniel
 */
public class FileConfig {

    /*
     * cria um serial criptografado contendo o cnpj, data inicial e data final
     * da licença
     */
    public static String serialCriptografado() {

        SimpleDateFormat formDataBr = new SimpleDateFormat("dd/MM/yyyy");
        String cnpj = "00.000.000/0000-00";

        Date dtInicial = new Date();
        Date dtFinal = null;
        String serial = "";

        Calendar c = Calendar.getInstance();
        c.setTime(dtInicial);
        c.add(Calendar.DAY_OF_WEEK, 5);
        dtFinal = c.getTime();

        try {
            serial = Encrypter.encrypt(cnpj + "=" + formDataBr.format(dtInicial) + "=" + formDataBr.format(dtFinal));
            //serial = Encrypter.encrypt(cnpj + "=" + "08/07/2014" + "=" + "09/07/2014");
        } catch (EncryptorException ex) {
            Mensagens.msgErro("erro ao criptografar\n" + ex.getMessage());
        }

        return serial;
    }

    /*
     verificar se existe pasta C:/SPAC e arquivo SPManager.ini dentro da pasta. Se nao existir cria com os dados abaixo
     */
    public static void createFileConfig() {
        try {
            File diretorioPasta = new File("C:/spac/");
            if (diretorioPasta.exists()) {
                //Nao faz nada
            } else {
                diretorioPasta.mkdir();
            }

            File diretorioArquivo = new File(dirFileConfig());

            if (diretorioArquivo.exists()) {
                //Não faz nada
            } else {
                BufferedWriter br = new BufferedWriter(new FileWriter(new File(dirFileConfig())));
                br.write("");
                br.close();

                Wini ini = new Wini();
                String dir = dirFileConfig();
                File iniFile = new File(dir);

                ini.load(iniFile);
                ini.add("[PADRAO]");
                ini.add("PADRAO", "descricao", "PADRAO");
                ini.add("PADRAO", "directory", "C:/SPAC/EMP??");
                ini.add("PADRAO", "port", "6262");
                ini.add("PADRAO", "server/ip", "??");
                ini.add("PADRAO", "metaEmpresa", "1");
                ini.add("PADRAO", "metaVendedor", "1");
                ini.add("PADRAO", "diasUteis", "25");
                ini.add("PADRAO", "exibirGrafico", "0");
                ini.add("PADRAO", "userMySQL", "root");
                ini.add("PADRAO", "senhaMySQL", "local");

                ini.store(iniFile);

                Runtime.getRuntime().exec("attrib +H " + dirFileConfig());
            }
        } catch (IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    public static void createFileCalcs() {
        List<UsuarioBean> usuarios = null;
        try {
            usuarios = UsuarioDao.listaUsuarios("");
        } catch (SQLException | IOException ex) {
            Mensagens.msgErro("erro ao carregar usuarios\n" + ex.getMessage());
        }
        try {
            BufferedWriter br = new BufferedWriter(new FileWriter(new File(dirFileCalcs())));
            br.write("");
            br.close();

            Wini ini = new Wini();
            String dir = dirFileCalcs();
            File iniFile = new File(dir);

            ini.load(iniFile);

            int listSize = usuarios.size();

            for (int i = 0; i < listSize; i++) {
                ini.add("[" + usuarios.get(i) + "]");
                ini.add(usuarios.get(i).getNome(), "vVenda", "0");
                ini.add(usuarios.get(i).getNome(), "vCusto", "0");
                ini.add(usuarios.get(i).getNome(), "vValeVenda", "0");
                ini.add(usuarios.get(i).getNome(), "vValeCusto", "0");
                ini.add(usuarios.get(i).getNome(), "vAcrescimo", "0");
                ini.add(usuarios.get(i).getNome(), "vDesconto", "0");
                ini.add(usuarios.get(i).getNome(), "funcao", usuarios.get(i).getFuncao());

            }

            ini.store(iniFile);

            Runtime.getRuntime().exec("attrib +H " + dirFileConfig());

        } catch (IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

    public static void createFileTraco() {
        try {
            File diretorioArquivo = new File(dirFileTraco());

            if (diretorioArquivo.exists()) {
                //Não faz nada
            } else {
                BufferedWriter br = new BufferedWriter(new FileWriter(new File(dirFileTraco())));
                br.write("");
                br.close();

                Wini ini = new Wini();
                String dir = dirFileTraco();
                File iniFile = new File(dir);

                ini.load(iniFile);
                ini.add("TRACO:");

                ini.store(iniFile);
            }
        } catch (IOException ex) {
            Mensagens.msgErro("erro\n" + ex.getMessage());
        }
    }

}
